home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics Plus
/
Graphics Plus.iso
/
general
/
modelers
/
geomview
/
source.lha
/
Geomview
/
src
/
bin
/
geomutil
/
ucd
/
stack.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-25
|
983b
|
49 lines
#include "polylistP.h"
static int BlockSize, array_size;
static Poly *mystack, *stackptr;
static int count = 0, debug = 0;
int
initstack()
{
array_size = 1;
BlockSize = 1024;
count = 0;
if ((mystack = OOGLNewN (Poly, BlockSize )) == (Poly *) NULL) return(0);
stackptr = mystack;
return(1);
}
int
push(pp)
Poly *pp;
{
register int i;
if (stackptr >= &mystack[BlockSize*array_size]) {
if (debug)
fprintf(stderr,"allocating again: size is now %d\n",array_size*BlockSize);
array_size = array_size*2;
if ((mystack = OOGLRenewN(Poly,mystack, array_size*BlockSize)) == (Poly *) NULL) return (0);
stackptr = &mystack[count];
}
*stackptr = *pp;
if ((stackptr->v = OOGLNewN(Vertex *, pp->n_vertices)) == (Vertex **) NULL)
return(0);
for (i=0; i<pp->n_vertices; ++i) stackptr->v[i] = pp->v[i];
stackptr++;
count++;
return(1);
}
int
getsize()
{
return(count);
}
Poly *
getstack()
{
return(mystack);
}